home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************/
- /* */
- /* Module: basepage.c - Examine base page variables */
- /* */
- /* Programmer: George R. Woodside */
- /* */
- /* Date: February 28, 1987 */
- /* */
- /****************************************************************************/
-
- #include <stdio.h>
- #include <osbind.h>
- #include <ctype.h>
- #include <basepage.h>
-
- #ifndef MWC
- extern struct b_page *_base; /* input base page address */
- struct b_page *page; /* set our own pointer */
- long bp_addr = page; /* save the address */
- #else
- struct b_page *page = BP; /* input base page address */
- long bp_addr = BP; /* save the address */
- #endif
-
- main()
- {
- register int c;
- register int i;
- register int limit;
- register long avail;
- register char *estr;
- char *envs[13]; /* environment pointers */
-
- #ifndef MWC
- page = _base; /* set our own pointer */
- #endif
-
- limit = (int) page->p_cmdlin[0]; /* force an int */
-
- estr = (char *)page->p_env; /* get environment start */
-
- for (i = 0; i < 13; i++ )
- envs[i] = (char *) NULL; /* zero all pointers */
-
- i = 0; /* reset array index */
-
- while( (*estr) && i < 13) /* until we hit end of strings, */
- {
- envs[i++] = estr; /* load label start */
- while(*estr++); /* skip to end of label */
- } /* end of environment string scan */
- i = 0; /* clear the index */
-
- printf("Base page: %8X ",page);
- if(envs[0])
- printf("Environment:");
- printf("\n");
-
- printf("Base of TPA: %8X ",page->p_lowtpa);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("End of TPA: %8X ",page->p_hitpa);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Base of text segment: %8X ",page->p_tbase);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Length of text segment: %8X ",page->p_tlen);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Base of data segment %8X ",page->p_dbase);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Length of data segment: %8X ",page->p_dlen);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Base of BSS segment: %8X ",page->p_bbase);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Length of BSS segment: %8X ",page->p_blen);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Disk Transfer Address: %8X ",page->p_dta);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Parent's basepage: %8X ",page->p_parent);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Environment string: %8X ",page->p_env);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Command line length: %2x ",limit);
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- printf("Command line: ");
- if(envs[i]) /* if an environment variable, */
- printf("%-32s\n",envs[i++]); /* print it */
- else /* if not, */
- printf("\n"); /* move down a line */
-
- c=page->p_cmdlin[1]; /* must set first character */
-
- for(i=1; i<=limit; c=page->p_cmdlin[++i])/* for however long it is, */
- if(isprint(c)) /* if it is printable, */
- printf("%c",c); /* print the command line */
- else
- printf("^%c",c+'@'); /* display as a control */
-
- printf("\n"); /* get a fresh line */
-
- avail = page->p_hitpa - page->p_lowtpa; /* compute free RAM */
- printf("RAM size, Hex: %X Decimal %D\n",avail,avail);
- printf("\n(Press any key.) "); /* warn the user, and */
- Crawcin(); /* wait for a keypress */
- printf("\n"); /* space down */
- } /* end main */
-